
import os
import pandas as pd
import re

def process_file(file_path, country_dict, output_dir):
    """
    处理单个Excel文件，将文件中的每个国家的数据按行展开，并保存为新文件。
    :param file_path: 输入的Excel文件路径。
    :param country_dict: 国家名称对照字典。
    :param output_dir: 输出文件的保存目录。
    """
    try:
        file_name = os.path.basename(file_path)
        index_name = file_name.split("_Indicators")[0]
        df = pd.read_excel(file_path, sheet_name="Data")
        rows = []

        for column in df.columns[1:]:
            match = re.search(r'\[([A-Z]+)\]$', column)
            if match:
                country_code = match.group(1).strip()
                if country_code in country_dict:
                    country_en, country_ch = country_dict[country_code]
                else:
                    continue
            else:
                continue

            for index, row in df.iterrows():
                rows.append({
                    '国名En': country_en,
                    '国名Ch': country_ch,
                    index_name: row[column],
                    'Year': row['Time']
                })

        transformed_df = pd.DataFrame(rows, columns=['国名En', '国名Ch', index_name, 'Year'])
        output_file_path = os.path.join(output_dir, index_name + '_AfterProcess.xlsx')
        transformed_df.to_excel(output_file_path, index=False)
        print(f"{file_name} → {index_name}_AfterProcess.xlsx 转换成功")
    except Exception as e:
        print(f"{file_name} → {index_name}_AfterProcess.xlsx 转换失败：{e}")
